home *** CD-ROM | disk | FTP | other *** search
/ BBS Toolkit / BBS Toolkit.iso / doors_2 / zzap65a.zip / ZZAP.DOC < prev    next >
Text File  |  1992-02-27  |  86KB  |  3,615 lines

  1.  
  2.  
  3.  
  4.  
  5.  
  6.  
  7.  
  8.  
  9.  
  10.  
  11.  
  12.  
  13.  
  14.  
  15.  
  16.  
  17.  
  18.  
  19.  
  20.  
  21.  
  22.  
  23.  
  24.                    █████████   █████████      ███      ███████   
  25.                     ░░░░░██░░   ░░░░░██░░    ██░██░    ██░░░░██░ 
  26.                         ██░░        ██░░    ██░  ██░   ██░    ██░
  27.                        ██░░        ██░░    ██░    ██░  ██░   ██░░
  28.                       ██░░        ██░░     █████████░  ███████░░ 
  29.                      ██░░        ██░░      ██░░░░░██░  ██░░░░░░  
  30.                     ██░░        ██░░       ██░    ██░  ██░       
  31.                    █████████   █████████   ██░    ██░  ██░       
  32.                     ░░░░░░░░░   ░░░░░░░░░   ░░     ░░   ░░       
  33.  
  34.                                      Version 6.5
  35.  
  36.  
  37.                               ZIP/ZOO/ARC/PAK Converter
  38.                                      (And More!)
  39.  
  40.                                 Copyright (c) 1989,91
  41.                                Ross Neilson Wentworth
  42.                                  All Rights Reserved
  43.  
  44.  
  45.  
  46.  
  47.  
  48.  
  49.  
  50.  
  51.  
  52.                                      Chapter One
  53.  
  54.                                   License Agreement
  55.  
  56.  
  57.           In the past I have not requested money to use ZZAP unless it was
  58.           used in a commercial environment.  However, due to its increased
  59.           popularity with the resultant increase in phone calls with
  60.           questions, I am forced to change my licensing policy.  This new
  61.           policy supersedes all previous agreements for the licensing of
  62.           ZZAP.
  63.  
  64.           You may use ZZAP on a trial basis for up to 30 days freely.  You
  65.           may give it away to anyone you wish so long as you do not charge
  66.           for it or use it as an incentive to buy.  If, after the 30 day
  67.           trial period, you wish to continue to use ZZAP, a registration
  68.           fee is required (see the file ORDER.FRM for details).
  69.  
  70.           Payment should be by check or money in U.S. funds drawn on a U.S.
  71.           bank.  I can not be responsible for cash that is sent through the
  72.           mail.  Printing the file "ORDER.FRM" will produce an order form
  73.           that you can use to register ZZAP.  Send your registration and/or
  74.           inquiry to:
  75.  
  76.                          Ross Neilson Wentworth
  77.                          1422 Elkgrove Circle, #3
  78.                          Venice, CA  90291
  79.                          (213)399-1244
  80.  
  81.  
  82.           The latest version of ZZAP can be found on West Los Angeles BBS,
  83.           (213)838-9229 or The Software Resource (1:102/330) at
  84.           (213)214-2018.
  85.  
  86.           Even if you do not wish to register I would appreciate hearing
  87.           from you.  A simple postcard listing your likes, dislikes,
  88.           suggestions, and the version number is all that I ask.
  89.  
  90.           The terms "arc", "archive", "unarc", etc. are used throughout
  91.           this document.  They are considered generic terms for all
  92.           archiving types and formats.  Any declaration that any of these
  93.           terms are proprietary will be construed as a ridiculous statement
  94.           and be properly ignored.
  95.  
  96.  
  97.  
  98.  
  99.  
  100.  
  101.  
  102.  
  103.  
  104.  
  105.  
  106.  
  107.  
  108.  
  109.  
  110.  
  111.  
  112.  
  113.  
  114.  
  115.  
  116.  
  117.  
  118.  
  119.  
  120.  
  121.  
  122.  
  123.  
  124.  
  125.  
  126.  
  127.  
  128.  
  129.  
  130.  
  131.  
  132.  
  133.  
  134.  
  135.  
  136.  
  137.  
  138.  
  139.  
  140.  
  141.  
  142.  
  143.  
  144.  
  145.  
  146.  
  147.  
  148.  
  149.  
  150.  
  151.  
  152.  
  153.  
  154.  
  155.  
  156.  
  157.  
  158.           Page 2                               Chapter 1. License Agreement
  159.  
  160.  
  161.  
  162.  
  163.  
  164.  
  165.  
  166.  
  167.  
  168.                                      Chapter Two
  169.  
  170.                                  Summary of Features
  171.  
  172.  
  173.               o  Automated conversion between the most common archive types
  174.                  (ARC, ARJ, DWC, ICE, LBR, LZH, MD, PAK, SDN, ZIP, and
  175.                  ZOO), including self-extracting archives.
  176.               o  Automatically converts nested archives including nested
  177.                  archives of different types.  A switch is provided to
  178.                  disable this feature.
  179.               o  Optionally convert archives in multiple subdirectories
  180.                  (subdirectory recursion).
  181.               o  Accepts wild-card designations and multiple file names on
  182.                  the command line.
  183.               o  Repack archives to same type.
  184.               o  Renames or moves corrupted archive for later examination.
  185.               o  User defined arcing and unarcing options.
  186.               o  Deletes old archives by default, options to keep them.
  187.               o  Optional logging of ZZAP activities to a text file.
  188.               o  Optionally create a text file listing the archives
  189.                  converted, suitable for use by filter programs to update
  190.                  the file list as used by BBS programs.
  191.               o  Flag archives containing files with Hidden, System, or
  192.                  ReadOnly attributes as "bad" or optionally strip the funny
  193.                  attributes.
  194.               o  Can automatically check an archive for viruses using the
  195.                  virus scanning program SCAN.EXE (version 39 or later) from
  196.                  McAfee Associates.
  197.               o  The standard input of programs that are executed can be
  198.                  redirected from a file to allow the automatic addition of
  199.                  an archive comment (currently this only works with ZIP
  200.                  files, I think).
  201.               o  Can take advantage of expanded memory (LIM 4.0 driver
  202.                  required) or extended memory (XMS driver required) to
  203.                  reduce the memory overhead while executing the archiving
  204.                  programs.
  205.               o  Processing can be skipped on archives that are more than a
  206.                  configurable number of days old.
  207.               o  External programs can be defined to be executed before
  208.                  and/or after each archive is processed.
  209.               o  Configurable for additional archiving programs.
  210.  
  211.  
  212.  
  213.  
  214.  
  215.  
  216.  
  217.  
  218.  
  219.  
  220.  
  221.  
  222.           Chapter 2. Summary of Features                             Page 3
  223.  
  224.  
  225.  
  226.  
  227.  
  228.  
  229.  
  230.  
  231.  
  232.  
  233.  
  234.  
  235.  
  236.  
  237.  
  238.  
  239.  
  240.  
  241.  
  242.  
  243.  
  244.  
  245.  
  246.  
  247.  
  248.  
  249.  
  250.  
  251.  
  252.  
  253.  
  254.  
  255.  
  256.  
  257.  
  258.  
  259.  
  260.  
  261.  
  262.  
  263.  
  264.  
  265.  
  266.  
  267.  
  268.  
  269.  
  270.  
  271.  
  272.  
  273.  
  274.  
  275.  
  276.  
  277.  
  278.  
  279.  
  280.  
  281.  
  282.  
  283.  
  284.  
  285.  
  286.           Page 4                             Chapter 2. Summary of Features
  287.  
  288.  
  289.  
  290.  
  291.  
  292.  
  293.  
  294.  
  295.  
  296.                                     Chapter Three
  297.  
  298.                                     Running ZZAP
  299.  
  300.  
  301.           The basic syntax of ZZAP is:
  302.  
  303.                     ZZAP [switches] filespec [filespec ...]
  304.  
  305.           Where [options] is any of the optional command line switches and
  306.           filespec is a file name, wildcard specification, or the name of a
  307.           file indicating a list of files.  A "list" file is signified by
  308.           preceding the file name with the '@' character, for example:
  309.  
  310.                     ZZAP @newfiles.lst
  311.  
  312.           You can mix filespecs on the command line, giving a combination
  313.           of specific file names, wildcards, and list files; limited only
  314.           by the length of the command line (80 characters):
  315.  
  316.                     ZZAP AFILE.ZOO *.LZH @UPLOADS.LST
  317.  
  318.           To halt ZZAP press the ESCape key.  Conversion of the current
  319.           archive will be completed and ZZAP will halt.
  320.  
  321.           Every attempt has been made to supply a universally acceptable
  322.           configuration file (ZZAP.CFG).  Everybody, of course, has
  323.           personal preferences so you may wish to modify it for your
  324.           special needs.  Consult the chapter on the configuration file for
  325.           information on customizing ZZAP operations.
  326.  
  327.           If you wish to log the activity of ZZAP you need to specify the
  328.           full path and file name of the log file.  See the chapter Logging
  329.           ZZAP Activity for details.
  330.  
  331.  
  332.  
  333.  
  334.  
  335.  
  336.  
  337.  
  338.  
  339.  
  340.  
  341.  
  342.  
  343.  
  344.  
  345.  
  346.  
  347.  
  348.  
  349.  
  350.           Chapter 3. Running ZZAP                                    Page 5
  351.  
  352.  
  353.  
  354.  
  355.  
  356.  
  357.  
  358.  
  359.  
  360.  
  361.  
  362.  
  363.  
  364.  
  365.  
  366.  
  367.  
  368.  
  369.  
  370.  
  371.  
  372.  
  373.  
  374.  
  375.  
  376.  
  377.  
  378.  
  379.  
  380.  
  381.  
  382.  
  383.  
  384.  
  385.  
  386.  
  387.  
  388.  
  389.  
  390.  
  391.  
  392.  
  393.  
  394.  
  395.  
  396.  
  397.  
  398.  
  399.  
  400.  
  401.  
  402.  
  403.  
  404.  
  405.  
  406.  
  407.  
  408.  
  409.  
  410.  
  411.  
  412.  
  413.  
  414.           Page 6                                    Chapter 3. Running ZZAP
  415.  
  416.  
  417.  
  418.  
  419.  
  420.  
  421.  
  422.  
  423.  
  424.                                     Chapter Four
  425.  
  426.                              Archive Programs Supported
  427.  
  428.  
  429.           Currently, there are a multitude of mostly incompatible archiving
  430.           utilities available.  While a standard would be beneficial to the
  431.           BBS community, it's not likely to occur in the near future.
  432.  
  433.           To help cope with the different formats and to make conversion
  434.           from one to another easy I wrote ZZAP.  It allows conversion from
  435.           one format to another, quickly and painlessly.  ZZAP doesn't
  436.           actually do any conversion on its own.  Rather, it acts as a
  437.           shell around the archivers - automating the process.
  438.  
  439.           The archive programs and version numbers tested under are:
  440.  
  441.                ARJ 2.00
  442.                DWC A4.95
  443.                ICE 1.14
  444.                LHARC 1.13
  445.                LUE 2.20 (extraction only)
  446.                MD (unknown version number - tested by user)
  447.                PAK 2.0
  448.                PKPAK/PKUNPAK 3.61 (a.k.a. PKARC/PKXARC)
  449.                PKZIP/PKUNZIP 1.10
  450.                ZOO 2.01
  451.  
  452.           Other formats should work if properly configured but there is no
  453.           guarantee.  If you run across an archiving program that does not
  454.           work under ZZAP I would like to hear about it so I can make the
  455.           necessary modifications.
  456.  
  457.  
  458.  
  459.  
  460.  
  461.  
  462.  
  463.  
  464.  
  465.  
  466.  
  467.  
  468.  
  469.  
  470.  
  471.  
  472.  
  473.  
  474.  
  475.  
  476.  
  477.  
  478.           Chapter 4. Archive Programs Supported                      Page 7
  479.  
  480.  
  481.  
  482.  
  483.  
  484.  
  485.  
  486.  
  487.  
  488.  
  489.  
  490.  
  491.  
  492.  
  493.  
  494.  
  495.  
  496.  
  497.  
  498.  
  499.  
  500.  
  501.  
  502.  
  503.  
  504.  
  505.  
  506.  
  507.  
  508.  
  509.  
  510.  
  511.  
  512.  
  513.  
  514.  
  515.  
  516.  
  517.  
  518.  
  519.  
  520.  
  521.  
  522.  
  523.  
  524.  
  525.  
  526.  
  527.  
  528.  
  529.  
  530.  
  531.  
  532.  
  533.  
  534.  
  535.  
  536.  
  537.  
  538.  
  539.  
  540.  
  541.  
  542.           Page 8                      Chapter 4. Archive Programs Supported
  543.  
  544.  
  545.  
  546.  
  547.  
  548.  
  549.  
  550.  
  551.  
  552.                                     Chapter Five
  553.  
  554.                                  Configuration File
  555.  
  556.  
  557.           ZZAP relies on a configuration file (ZZAP.CFG) to know how to arc
  558.           and unarc.  There are a number commands allowed in the
  559.           configuration file, three of them are required (ARC=, UNARC=, and
  560.           DEFAULT=) and the rest are optional.  The order of the commands
  561.           are unimportant.
  562.  
  563.           Each command is on its own line.  Placing multiple commands on a
  564.           single line will result in improper operation.  A configuration
  565.           file is included with this package that may be used as-is or may
  566.           be modified for your personal preferences.
  567.  
  568.  
  569.           5.1  ARC=
  570.  
  571.  
  572.           ARC= defines the command used to archive.  This command can
  573.           appear as many times as required to define all of the various
  574.           archive types you may use.  The syntax for this command is:
  575.  
  576.                     ARC=EXT PROGNAME OPTIONS
  577.  
  578.           EXT represents the filename extension used by this particular
  579.           archiver, PKZIP, for example, uses ZIP.  Do NOT include a leading
  580.           period.
  581.  
  582.           PROGNAME is the name of the actual archiving program.  If the
  583.           filename extension is not given the a search will be made for
  584.           both COM and EXE.  Including the extension will improve the
  585.           performance of ZZAP.
  586.  
  587.           OPTIONS is the command line options used to create an archive.
  588.           ZOO, for example, uses "-ADD" while PKPAK uses "-A".  Since some
  589.           archiving programs use both upper and lower case letters to
  590.           represent different actions, this item's case is left intact.
  591.           OPTIONS also may include the "%1" to indicate where the archive
  592.           files name should be placed on the command line.  In previous
  593.           version the archive name was appended to the end of the command
  594.           line if the %1 was omitted.  This is no longer true, now you MUST
  595.           specify the %1 if you wish the archive name on the command line.
  596.  
  597.           If you wish to redirect the standard input or output of the
  598.           archiving program then put the redirection command at the end of
  599.           OPTIONS.  ZZAP allows three types of redirection: > redirects the
  600.           output, < redirects the input, and >> appends redirection to the
  601.           indicated file.
  602.  
  603.  
  604.  
  605.  
  606.           Chapter 5. Configuration File                              Page 9
  607.  
  608.  
  609.  
  610.  
  611.  
  612.  
  613.           The following are all legal ARC= commands:
  614.  
  615.                          ARC=ARC PKPAK -A %1 *.*
  616.                          ARC=DWC DWC.EXE AZ %1 *.*
  617.                          ARC=PAK PAK A %1 *.*
  618.                          ARC=LZH LHARC.EXE a %1 *.*
  619.                          ARC=ZIP PKZIP -A -EX
  620.                          ARC=ZOO ZOO.EXE -ADD %1 * >NUL
  621.                          ARC=ZIP PKZIP.EXE -a -z %1 *.* >NUL <HEADER.ANS
  622.  
  623.           The last two examples have their display output redirected to the
  624.           NUL device, resulting in the normal output to not be displayed.
  625.           The last example has its standard input redirected from the file
  626.           "HEADER.ANS".  THE -z option of PKZIP is the add archive comment
  627.           command.  The contents of the file will be used as the archive
  628.           comment.
  629.  
  630.           Note that if there is an error when attempting to open a file for
  631.           redirection a second attempt will be made to redirect using the
  632.           NUL device.  This is so that PKZIP (and possibly other programs)
  633.           won't sit and wait for input from the keyboard.
  634.  
  635.           See also COMSPEC.
  636.  
  637.  
  638.           5.2  UNARC=
  639.  
  640.  
  641.           The next command is UNARC=.  This is the commands to unarc the
  642.           various types of archives.  This command can appear as many times
  643.           as necessary to define all the archive types you may use.  The
  644.           syntax for this command is:
  645.  
  646.                          UNARC=EXT PROGNAME OPTIONS
  647.  
  648.           EXT is the extension used by this type of archive.
  649.  
  650.           PROGNAME is the name of the program used to extract files in the
  651.           archive.
  652.  
  653.           OPTIONS is the command line options used to extract files from
  654.           the archive.  As with the ARC command, "%1" may also be included
  655.           to indicate the position of the archive file name.
  656.  
  657.           If you wish the display output of the  unarcing program to be
  658.           redirected you should list the redirection command last.
  659.  
  660.           For unarcing to work with ZZAP it MUST extract all files in an
  661.           archive if a filename is not given after the archive name.
  662.  
  663.  
  664.  
  665.  
  666.  
  667.  
  668.  
  669.  
  670.           Page 10                             Chapter 5. Configuration File
  671.  
  672.  
  673.  
  674.  
  675.  
  676.  
  677.           The following are all legal UNARC commands:
  678.  
  679.                          UNARC=ARC PKXARC.EXE
  680.                          UNARC=DWC DWC E %1 *.*
  681.                          UNARC=LZH LHARC.EXE e
  682.                          UNARC=PAK PAK E %1 *.*
  683.                          UNARC=ZIP PKUNZIP.EXE %1 >NUL
  684.                          UNARC=ZOO ZOO -EXTRACT %1 >NUL
  685.  
  686.           The last two examples have their display output redirected to the
  687.           NUL device.
  688.  
  689.           Subdirectories
  690.           It is recommended that you turn on creation of subdirectories if
  691.           the archive format supports storing subdirectories along with
  692.           file names.  This is to allow ZZAP to detect the subdirectories
  693.           and treat the archive as BAD.  If the unarc program allows all
  694.           files to be placed in a single subdirectory a file name conflict
  695.           can arise, resulting in the unarc program stopping and waiting
  696.           for keyboard input to verify a file overwrite.  This could
  697.           potentially stop your computer dead, leaving the BBS system off-
  698.           line until manually continued.
  699.  
  700.           The unarc program MUST allow the subdirectories created to be
  701.           children of the temporary subdirectory.
  702.  
  703.                          UNARC=ZIP PKUNZIP.EXE -d %1 >NUL
  704.  
  705.           This example causes PKUNZIP to create subdirectories if the
  706.           information is stored with the file names.  ZZAP will detect the
  707.           creation of any subdirectories, log the error message, move the
  708.           archive to the BAD subdirectory, and clean up (remove all files
  709.           and subdirectories extracted from the archive).
  710.  
  711.           If the unarc program creates the subdirectores anyplace besides
  712.           in the temporary subdirectory ZZAP will not be able to detect
  713.           them, the contents of the new archive will be incomplete, and the
  714.           subdirectories created will remain on your disk.
  715.  
  716.           See also COMSPEC.
  717.  
  718.  
  719.           5.3  DEFAULT=
  720.  
  721.  
  722.           This is the default extension used to decide which archiving
  723.           format to convert to.  The extension given must match one of the
  724.           extensions given with the ARC= command.  If a match is not found
  725.           the program will halt with an error.  The syntax for this command
  726.           is:
  727.  
  728.                          DEFAULT=ext
  729.  
  730.           where ext is the file extension corresponding to an archive type.
  731.  
  732.  
  733.  
  734.           Chapter 5. Configuration File                             Page 11
  735.  
  736.  
  737.  
  738.  
  739.  
  740.  
  741.           The following are legal DEFAULT commands:
  742.  
  743.                          DEFAULT=ZIP
  744.                          DEFAULT=ZOO
  745.                          DEFAULT=.ARC
  746.  
  747.           Note that the preceding period is optional.
  748.  
  749.           You can override DEFAULT= with the command line switch /E.
  750.  
  751.  
  752.           5.4  BADDIR=
  753.  
  754.  
  755.           Whenever an archive fails to unarc properly or fails the virus
  756.           check it will be renamed to so the second character of the
  757.           extension is "!", e.g. "Z!P".  By default the file is kept in its
  758.           original subdirectory.  If you wish bad archives to be placed in
  759.           a special subdirectory you may use the BADDIR= command.  Simply
  760.           name the subdirectory you wish to use.  This subdirectory must
  761.           already exist for this option to work properly.  Example:
  762.  
  763.                          BADDIR=C:\BAD
  764.  
  765.           The defined subdirectory can be on a different drive but if the
  766.           file move is unsuccessful the file will simply be renamed to have
  767.           the normal bad extension (the default mode).
  768.  
  769.  
  770.           5.5  SWITCH=
  771.  
  772.  
  773.           Use this to specify your default command line switches.  For
  774.           example, if you always use the virus checking options you can
  775.           place this in your configuration file:
  776.  
  777.                          SWITCH=/V+
  778.  
  779.           You can always override the options on the command line:
  780.  
  781.                          ZZAP /V- file.ext
  782.  
  783.           The command line always takes precedence over the configuration
  784.           file.
  785.  
  786.  
  787.           5.6  FIXER=
  788.  
  789.  
  790.           Specify the name of your BBS download list fix-up program and
  791.           command line options with this command.  For example, if you are
  792.           running a QuickBBS bulletin board system you can specify
  793.           FIXER=QFIX.EXE (included in this package).
  794.  
  795.  
  796.  
  797.  
  798.           Page 12                             Chapter 5. Configuration File
  799.  
  800.  
  801.  
  802.  
  803.  
  804.  
  805.           Include any command line options needed immediately after the
  806.           fix-up program name.  For example, to automatically update the
  807.           4DOS description file the proper syntax would be:
  808.  
  809.                          FIXER=QFIX.EXE DESCRIPT.ION
  810.  
  811.           This command is only needed if you plan on using the /C command
  812.           line switch.
  813.  
  814.           See also COMSPEC.
  815.  
  816.  
  817.           5.7  AGE=
  818.  
  819.  
  820.           If this command is used then only files that are within the
  821.           specified number of days old will be processed.  For example,
  822.           setting the age to 1 (AGE=1) will result in only files that are
  823.           one day old (files with today's date ONLY) to be processed by
  824.           ZZAP.
  825.  
  826.           Sysops who have an "event" at midnight will generally wish to set
  827.           AGE= to 2, allowing files from today and yesterday to be
  828.           processed.  When using this feature you should use the /DO
  829.           command line switch (keep original dates of files).  Assuming you
  830.           stamped the files with the date they are uploaded, this would
  831.           guarantee that only new archives are processed.
  832.  
  833.           Omitting this command or setting AGE=0 results in the age of a
  834.           file to be completely ignored.
  835.  
  836.           See also the /I command line switch.
  837.  
  838.  
  839.           5.8  PRE=
  840.  
  841.  
  842.           If you wish an external program executed to process an archive
  843.           before its files are extracted declare the program name and
  844.           command line options with this command.
  845.  
  846.                PRE=GETCMTS.EXE %1
  847.  
  848.           With the above example the hypothetical program GETCMTS.EXE will
  849.           be execute with the archive name passed as the command line
  850.           parameter.  The specified program will be executed while in the
  851.           same subdirectory as the archive being processed (regardless of
  852.           the command line parameters).
  853.  
  854.           If the DOS return code returned by the PRE= program is exactly
  855.           101 further processing on the file will be skipped.  This could
  856.           be used to run a program that detects for authenticity
  857.           verification information (e.g. -AV option for PKZIP) since ZZAP
  858.           will lose the AV information if it rebuilds an archive.
  859.  
  860.  
  861.  
  862.           Chapter 5. Configuration File                             Page 13
  863.  
  864.  
  865.  
  866.  
  867.  
  868.  
  869.           This program, as well as programs defined by MID= and POST= will
  870.           be executed for nested archives as well.  You should avoid
  871.           creating files in the temporary subdirectories ("Z.I_P" is
  872.           created as a child of the subdirectory holding the archive being
  873.           processed) as these files will be added to the new archive
  874.           (unless that is what you wish done).
  875.  
  876.           While testing ZZAP I often use a "PRE=MAPMEM.EXE >\MAP" to get a
  877.           memory map of the system while shelling to an external program.
  878.           This helped me to optimize memory usage so that the maximum
  879.           amount is available.
  880.  
  881.           See also MID=, POST=, and COMSPEC.
  882.  
  883.  
  884.           5.9  MID=
  885.  
  886.  
  887.           If you wish an external program executed after files have been
  888.           extracted from the old archive but before the new archive has
  889.           been created declare the program name and command line options
  890.           with this command.
  891.  
  892.                MID=DIRSORT.EXE NE
  893.  
  894.           With the above example the program DIRSORT.EXE will be executed
  895.           with the command line option of NE.  You can execute a batch file
  896.           via the command processor (normally COMMAND.COM) by specifying
  897.           %COMSPEC% as the filename.  This is useful for deleting those
  898.           silly BBS ads that seem to propagate unchecked throughout
  899.           archives.  For example, in ZZAP.CFG:
  900.  
  901.                MID=%COMSPEC% /c bbsads
  902.  
  903.           If your batch file is not somewhere on the PATH you should
  904.           include the path in the filename.  In your batch file called
  905.           BBSADS.BAT:
  906.  
  907.                IF EXIST STUPID.AD DEL STUPID.AD
  908.                REM repeat for BBS AD filename
  909.  
  910.           The specified program will be executed while in the temporary
  911.           subdirectory ZZAP creates to hold the extracted files.  If you
  912.           create any temporary files you should clean up afterwards,
  913.           otherwise the file(s) will be added to the archive when it is
  914.           repacked.
  915.  
  916.           See also PRE=, POST=, and COMSPEC.
  917.  
  918.  
  919.  
  920.  
  921.  
  922.  
  923.  
  924.  
  925.  
  926.           Page 14                             Chapter 5. Configuration File
  927.  
  928.  
  929.  
  930.  
  931.  
  932.  
  933.           5.10  POST=
  934.  
  935.  
  936.           If you wish an external program executed to process the new
  937.           archive after it as been created (or repacked) declare the
  938.           program name and command line options with this command.
  939.  
  940.                POST=PUTCMTS.EXE %1
  941.  
  942.           With the above example the hypothetical program PUTCMTS.EXE will
  943.           be executed with the archive name (the new name) as the command
  944.           line parameter.  The specified program will be executed while in
  945.           the same subdirectory as the archive being processed (regardless
  946.           of the command line parameters).
  947.  
  948.           The main intent of the PRE= and POST= commands is to allow third
  949.           party programmers to create programs that extract archive
  950.           comments from the original archives and then put them into the
  951.           new archives.  Since these are format specific I didn't want to
  952.           program these types of operations into ZZAP.
  953.  
  954.           See also PRE=, MID=, and COMSPEC.
  955.  
  956.  
  957.           5.11  SFX=
  958.  
  959.  
  960.           Defines the offset and "signature" to search for in an EXE or COM
  961.           file to verify if it is a self-extracting archive.  The
  962.           parameters are:
  963.  
  964.                SFX=ext offset signature
  965.  
  966.           For example, for ZIP version 1.10 self-extracting archives the
  967.           parameters are:
  968.  
  969.                SFX=ZIP 50 PKWARE
  970.  
  971.           The extension you specify will determine which unarc program is
  972.           used to extract the files in the archive.  The offset is a
  973.           decimal number indicating the position in the file that the
  974.           signature is found at.  The signature is any combination of
  975.           characters that can uniquely determine if the archive is that
  976.           specific SFX type.
  977.  
  978.           Multiple definitions can be given for the same extension, thus
  979.           allowing different versions to be supported.  For example most
  980.           SFX archives come in two flavors, regular and junior.  The offset
  981.           and/or signatures are usually different for each type, though the
  982.           same unarc program can be used for either type.
  983.  
  984.           The signature can be regular ASCII characters (case is
  985.           significant) as well as the following special characters:
  986.  
  987.  
  988.  
  989.  
  990.           Chapter 5. Configuration File                             Page 15
  991.  
  992.  
  993.  
  994.  
  995.  
  996.  
  997.                    ^           Species a control character, e.g. ^A is
  998.                                replaced with ASCII byte value 01h.
  999.                    #           Place numbers between a pair of these to
  1000.                                indicate a specific ASCII value, e.g. #13#
  1001.                                for ASCII character 13 (decimal).
  1002.                    /           The following character is used as is.  Must
  1003.                                precede the /, ^ or # character, e.g. /^
  1004.                                when you want an explicit ^ character.
  1005.  
  1006.  
  1007.           5.12  NONSFX=
  1008.  
  1009.  
  1010.           By default, executable files (EXE and COM) which are not
  1011.           recognized as self-extracting archives are treated as "bad".  If
  1012.           you would prefer to have these files ignored include
  1013.           NONSFX=IGNORE in the configuration file.  Leaving out this
  1014.           command or including NONSFX=BAD will result in executables to be
  1015.           treated as "bad" if they are not self-extracting archives.
  1016.  
  1017.  
  1018.           5.13  NESTEDSFX=
  1019.  
  1020.  
  1021.           You can have ZZAP check for SFX signatures in executable files
  1022.           contained inside an archive by including NESTEDSFX=YES in the
  1023.           configuration file.  Note that many programs include automatic
  1024.           installation programs that rely on certain files being SFX and
  1025.           converting these files will probably break these programs (though
  1026.           they are rare).  Alternately, you can have archives with nested
  1027.           SFX files flagged as "bad" and placed in the bad archive
  1028.           subdirectory (or renamed), giving you the opportunity to manual
  1029.           examine the archive and decide if it should be converted or left
  1030.           alone.
  1031.  
  1032.  
  1033.           5.14  SCANOPT=
  1034.  
  1035.  
  1036.           Place, after this command, any command line options you wish
  1037.           passed on to SCAN.EXE when it is executed.  The given options
  1038.           will be added after the subdirectory to scan exactly as shown in
  1039.           the configuration file.  For example, if you have this in the
  1040.           configuration file:
  1041.  
  1042.                     SCANOPT=/A /NOMEM
  1043.  
  1044.           SCAN will be executed as:
  1045.  
  1046.                     SCAN pathname /A /NOMEM
  1047.  
  1048.  
  1049.  
  1050.  
  1051.  
  1052.  
  1053.  
  1054.           Page 16                             Chapter 5. Configuration File
  1055.  
  1056.  
  1057.  
  1058.  
  1059.  
  1060.  
  1061.  
  1062.  
  1063.  
  1064.                                      Chapter Six
  1065.  
  1066.                                 Logging ZZAP Activity
  1067.  
  1068.  
  1069.           If you wish ZZAP to run unattended (see EVENTS below) then you
  1070.           may wish to log its activities.  You must specify the drive full
  1071.           path and file name of the log file in the environment with the
  1072.           ZZAPLOG variable.  In your AUTOEXEC.BAT file you should place
  1073.           this (or something similar):
  1074.  
  1075.                     SET ZZAPLOG=C:\LOG\ZZAP.LOG
  1076.  
  1077.           The actual file name will depend upon your system configuration.
  1078.  
  1079.           The first time the log option is used the log file is created.
  1080.           On subsequent runs new information is appended to the end of the
  1081.           file.
  1082.  
  1083.           The log file is a standard ASCII file that may be viewed, edited,
  1084.           printed, etc..  It will contain information about archives
  1085.           converted, viruses detected, corrupted archives, and other error
  1086.           messages, along with the times and dates when they occurred.
  1087.  
  1088.  
  1089.  
  1090.  
  1091.  
  1092.  
  1093.  
  1094.  
  1095.  
  1096.  
  1097.  
  1098.  
  1099.  
  1100.  
  1101.  
  1102.  
  1103.  
  1104.  
  1105.  
  1106.  
  1107.  
  1108.  
  1109.  
  1110.  
  1111.  
  1112.  
  1113.  
  1114.  
  1115.  
  1116.  
  1117.  
  1118.           Chapter 6. Configuration File                             Page 17
  1119.  
  1120.  
  1121.  
  1122.  
  1123.  
  1124.  
  1125.  
  1126.  
  1127.  
  1128.  
  1129.  
  1130.  
  1131.  
  1132.  
  1133.  
  1134.  
  1135.  
  1136.  
  1137.  
  1138.  
  1139.  
  1140.  
  1141.  
  1142.  
  1143.  
  1144.  
  1145.  
  1146.  
  1147.  
  1148.  
  1149.  
  1150.  
  1151.  
  1152.  
  1153.  
  1154.  
  1155.  
  1156.  
  1157.  
  1158.  
  1159.  
  1160.  
  1161.  
  1162.  
  1163.  
  1164.  
  1165.  
  1166.  
  1167.  
  1168.  
  1169.  
  1170.  
  1171.  
  1172.  
  1173.  
  1174.  
  1175.  
  1176.  
  1177.  
  1178.  
  1179.  
  1180.  
  1181.  
  1182.           Page 18                          Chapter 6. Logging ZZAP Activity
  1183.  
  1184.  
  1185.  
  1186.  
  1187.  
  1188.  
  1189.  
  1190.  
  1191.  
  1192.                                     Chapter Seven
  1193.  
  1194.                                   Executing Compsec
  1195.  
  1196.  
  1197.           Any time you declare, in the configuration file, a program to be
  1198.           executed you have the option of using %COMSPEC% to indicate to
  1199.           ZZAP to execute DOS (normally COMMAND.COM).  With this feature
  1200.           you can execute a batch file instead of a single program.  For
  1201.           example:
  1202.  
  1203.                     FIXER=%COMSPEC% /C FIXUP %1
  1204.  
  1205.           If FIXUP is a batch file it will be executed with the archive
  1206.           name passed as the parameter.  The /C option is to tell DOS to
  1207.           return to the calling program (ZZAP) when execution has been
  1208.           completed.
  1209.  
  1210.           Caution!  When you execute COMSPEC any error codes returned by
  1211.           programs will be unseen by ZZAP.
  1212.  
  1213.           See also PRE=, MID=, and POST=.
  1214.  
  1215.  
  1216.  
  1217.  
  1218.  
  1219.  
  1220.  
  1221.  
  1222.  
  1223.  
  1224.  
  1225.  
  1226.  
  1227.  
  1228.  
  1229.  
  1230.  
  1231.  
  1232.  
  1233.  
  1234.  
  1235.  
  1236.  
  1237.  
  1238.  
  1239.  
  1240.  
  1241.  
  1242.  
  1243.  
  1244.  
  1245.  
  1246.           Chapter 7. Executing Compsec                              Page 19
  1247.  
  1248.  
  1249.  
  1250.  
  1251.  
  1252.  
  1253.  
  1254.  
  1255.  
  1256.  
  1257.  
  1258.  
  1259.  
  1260.  
  1261.  
  1262.  
  1263.  
  1264.  
  1265.  
  1266.  
  1267.  
  1268.  
  1269.  
  1270.  
  1271.  
  1272.  
  1273.  
  1274.  
  1275.  
  1276.  
  1277.  
  1278.  
  1279.  
  1280.  
  1281.  
  1282.  
  1283.  
  1284.  
  1285.  
  1286.  
  1287.  
  1288.  
  1289.  
  1290.  
  1291.  
  1292.  
  1293.  
  1294.  
  1295.  
  1296.  
  1297.  
  1298.  
  1299.  
  1300.  
  1301.  
  1302.  
  1303.  
  1304.  
  1305.  
  1306.  
  1307.  
  1308.  
  1309.  
  1310.           Page 20                              Chapter 7. Executing Compsec
  1311.  
  1312.  
  1313.  
  1314.  
  1315.  
  1316.  
  1317.  
  1318.  
  1319.  
  1320.                                     Chapter Eight
  1321.  
  1322.                                 Command Line Options
  1323.  
  1324.  
  1325.           There are a number of command line options that allow you to
  1326.           customize the behavior of ZZAP.  These options can also be
  1327.           declared in the configuration file using the SWITCH= statement.
  1328.           Command line options override configuration file options.
  1329.  
  1330.           With the exception of the /E and /D switches, each option is a
  1331.           forward slash (/), a letter, and optionally followed by a plus
  1332.           (+) or minus (-).  If the option is given but the plus or minus
  1333.           is omitted then plus is assumed, e.g. /A is equivalent to /A+.
  1334.           Plus (+) turns the option on and minus (-) turns the option off.
  1335.  
  1336.                    /A          Flag archives with HIDDEN, SYSTEM, or READ-
  1337.                                ONLY files (default ON).
  1338.                    /B          Allow subdirectories.
  1339.                    /C          Call the BBS file description updating
  1340.                                program.
  1341.                    /D          File date stamping.
  1342.                    /E          Extension of archive type to convert to.
  1343.                    /F          Create a list of files that were converted
  1344.                                (default OFF).
  1345.                    /I          Ignore age of files.
  1346.                    /K          Keep the original archive (default OFF).
  1347.                    /M          Use expanded or  extended memory when
  1348.                                shelling (default ON).
  1349.                    /N          Convert archives nested within archives
  1350.                                (default ON).
  1351.                    /O          Repack all archives to original archive type
  1352.                                (default OFF)
  1353.                    /P          Prevent overwriting existing archives
  1354.                                (default OFF).
  1355.                    /R          Recurs subdirectories (default OFF).
  1356.                    /S          Strip HIDDEN, SYSTEM, and READ-ONLY
  1357.                                attributes (default OFF).
  1358.                    /T          Test mode only - no repacking (default OFF).
  1359.                    /V          Scan for viruses (default OFF).
  1360.                    /X          Enable self-extracting archive processing.
  1361.                    /Z          Enable/disable I/O redirection.
  1362.  
  1363.  
  1364.           8.1  Flag Odd Attributes - /A
  1365.  
  1366.  
  1367.           If this option is ON any archive that contains a file with the
  1368.           HIDDEN, SYSTEM, or READ-ONLY attribute will be treated as a
  1369.           corrupt archive and be renamed to have a "!" as the second
  1370.  
  1371.  
  1372.  
  1373.  
  1374.           Chapter 8. Command Line Options                           Page 21
  1375.  
  1376.  
  1377.  
  1378.  
  1379.  
  1380.  
  1381.           character of the extension.  Currently, only PKZIP, LHARC, and
  1382.           ICE support attributes within the archive.
  1383.  
  1384.           It is highly recommended that you have on either the /A or /S
  1385.           command at all times since most archiving programs will
  1386.           completely ignore hidden files, possibly resulting in lost files.
  1387.  
  1388.           The /S (strip attributes) command will override this command.
  1389.  
  1390.  
  1391.           8.2  Allow subdirectories - B
  1392.  
  1393.  
  1394.           Some archive formats allow subdirectory information to be
  1395.           imbedded into the archive.  By default, ZZAP treats archives with
  1396.           subdirectory information as BAD archives, leaving them for you to
  1397.           manually examine and process.
  1398.  
  1399.           If the archive format you are converting to supports
  1400.           subdirectories you can have this information automatically
  1401.           included in the conversion process by modifying the program
  1402.           options for the ARC and UNARC programs and including the /B
  1403.           option on the command line (or with the SWITCH= option).
  1404.  
  1405.           It is assumed that subdirectories that are created by the UNARC
  1406.           program will be child directories of ZZAP's temporary work
  1407.           subdirectory ZZAP.  If a subdirectory is created elsewhere it
  1408.           will not be detected and the files contained therein will not be
  1409.           added to the new archive.  Nested archives that are placed in
  1410.           created subdirectories will not be converted by ZZAP.
  1411.  
  1412.           *** WARNING ***  Do not use the /B switch unless you are sure
  1413.           that the default archive configuration is properly configured to
  1414.           allow subdirectory information.  Improper configuration will
  1415.           result in the failure of files to be included in the new
  1416.           subdirectory.  It is URGED that you manually test all possible
  1417.           situations before trusting the /B switch in an unattended mode.
  1418.  
  1419.           The following archive programs can NOT be used to extract
  1420.           subdirectory information.  This limitation is because the
  1421.           programs insist on creating the original subdirectories instead
  1422.           of creating the subdirectories as children of the current
  1423.           directory:
  1424.  
  1425.                     DWC A495
  1426.                     PAK 2.10
  1427.  
  1428.           This limitation may be removed in future versions of these
  1429.           programs or the limitation could be removed by changing the
  1430.           configuration of each of these programs in the ZZAP configuration
  1431.           file.
  1432.  
  1433.           This limitation does not exist for the creation of new archives,
  1434.           however, it should be noted that because the entire path is
  1435.  
  1436.  
  1437.  
  1438.           Page 22                           Chapter 8. Command Line Options
  1439.  
  1440.  
  1441.  
  1442.  
  1443.  
  1444.  
  1445.           stored you may not have the subdirectory information that you
  1446.           desire.  *** REPEAT OF WARNING *** allow subdirectory creation
  1447.           with extreme caution.  It is highly recommended that you leave
  1448.           out the /B option and handle the subdirectories manual on a
  1449.           case-by-case basis.
  1450.  
  1451.  
  1452.           8.3  Call Update Program - /C
  1453.  
  1454.  
  1455.           Turning this option on causes the fix-up program named in the
  1456.           configuration file (see FIXER=) to be executed after all
  1457.           conversions have been completed.  This removes the necessity to
  1458.           execute the program after running ZZAP.
  1459.  
  1460.           Turning this option on also forces the /F option on as well.
  1461.  
  1462.           This option is ignored when using the Test Only mode (/T).
  1463.  
  1464.  
  1465.           8.4  File Date Stamping - /D
  1466.  
  1467.  
  1468.           ZZAP provides three different options for setting the date and
  1469.           time of the archives after they have been converted.  Immediately
  1470.           follow /D with one of three letters to indicate which stamping
  1471.           method to use:
  1472.  
  1473.                    T           Stamp with the current date and time
  1474.                                (Today).
  1475.                    L           Stamp with the date and time of the most
  1476.                                recent file contained in the archive
  1477.                                (Latest).
  1478.                    O           Keep the original date and time of the
  1479.                                archive (Original).
  1480.  
  1481.           Sysops may wish to use the /DO (original date) option in
  1482.           conjunction with the AGE= configuration file command.  If your
  1483.           daily maintenance event is at midnight you should set AGE=2.
  1484.           After a file is successfully uploaded you should "TOUCH" the file
  1485.           with the current date and time.  When the daily event occurs,
  1486.           only files that are one or two days old will be processed.  Since
  1487.           there shouldn't be any one day old files (assuming a midnight
  1488.           event), only the files uploaded from the previous day will be
  1489.           processed.
  1490.  
  1491.           The default stamping method is /DL.
  1492.  
  1493.  
  1494.           8.5  Target Extension - /E
  1495.  
  1496.  
  1497.           Overrides the DEFAULT= option in the configuration file.  Follow
  1498.           immediately with a three letter extension, for example:
  1499.  
  1500.  
  1501.  
  1502.           Chapter 8. Command Line Options                           Page 23
  1503.  
  1504.  
  1505.  
  1506.  
  1507.  
  1508.  
  1509.                     ZZAP /EZIP *.LZH
  1510.  
  1511.           The above example will convert all LZH type archives in the
  1512.           current directory to ZIP archives.
  1513.  
  1514.           Unlike the DEFAULT= configuration file option, you must not
  1515.           precede the extension with a period.
  1516.  
  1517.  
  1518.           8.6  File List - /F
  1519.  
  1520.  
  1521.           If the /F+ option is used the text file FILES.FIX will be created
  1522.           that lists each of the files converted.  Each line contains a
  1523.           single entry, first is the full path and file name of the
  1524.           original file, followed by a single space, and finally the new
  1525.           file name (no path), for example:
  1526.  
  1527.                C:\ARCHIVES\MYARC.LZH MYARC.ZIP
  1528.                C:\ARCHIVES\ANOTHER.ZOO ANOTHER.ZIP
  1529.                C:\NEWSTUFF\JUNK.ICE JUNK.ZIP
  1530.  
  1531.           Files that are repacked to the same type (e.g. ZIP to ZIP) will
  1532.           also be listed in this file.  Under some BBS list formats the
  1533.           file size, date, time, etc. are also stored along with the file
  1534.           name and description.  It is up to the programmer of the filter
  1535.           to use or ignore unchanged file names as necessary.
  1536.  
  1537.           This option is ignored when using the Test Only mode (/T).
  1538.  
  1539.           This text file can be used by a filter program to modify any file
  1540.           list as used by most BBS systems to reflect the change of file
  1541.           names.  Included with ZZAP is the program QFIX.EXE that modifies
  1542.           the file list format used by QuickBBS and many other BBS systems
  1543.           as well as the description file used by 4DOS.  See the QFIX
  1544.           document file for additional information.
  1545.  
  1546.           A filter program for TBBS called DIRFIX has been written by Gary
  1547.           W. Funk.  This program is also included with ZZAP by permission.
  1548.  
  1549.           I will be happy to provide some limited assistance in developing
  1550.           filter programs for other BBS list formats.  If you develop a
  1551.           filter program that would be of interest to others, send a copy
  1552.           to me so I can make it available to other sysops.  Appropriate
  1553.           acknowledgments will, of course, be given.
  1554.  
  1555.  
  1556.           8.7  Ignore File Age - /I
  1557.  
  1558.  
  1559.           If you use the AGE= option to ignore files that are more than a
  1560.           specified number of days old you can override this with the /I
  1561.           command.  Enabling the /I option will result in all files
  1562.  
  1563.  
  1564.  
  1565.  
  1566.           Page 24                           Chapter 8. Command Line Options
  1567.  
  1568.  
  1569.  
  1570.  
  1571.  
  1572.  
  1573.           (matching the file specification) being processed, regardless of
  1574.           their age.
  1575.  
  1576.  
  1577.           8.8  Keeping The Original - /K
  1578.  
  1579.  
  1580.           By default the original archive is deleted after the new archive
  1581.           is successfully created.  To prevent the old archives from being
  1582.           deleted you need to turn ON the /K (keep) option.  For example:
  1583.  
  1584.                          ZZAP /K+ *.ARC
  1585.  
  1586.           This switch can be used in combination with any other option:
  1587.  
  1588.                          ZZAP /K+ /R+ C:\*.ARC
  1589.  
  1590.  
  1591.           8.9  Expanded/Extended Memory - /M
  1592.  
  1593.  
  1594.           By default ZZAP will take advantage of expanded or extended
  1595.           memory while shelling to an archive program.  This makes more
  1596.           memory available to the archiver and may mean the difference
  1597.           between success or failure in a tight memory system.  If you do
  1598.           NOT wish expanded to be used include the /M- option on the
  1599.           command line.
  1600.  
  1601.           To use expanded memory a LIM 4.0 driver be installed as well as
  1602.           sufficient EMS to store the bulk of the program and data.
  1603.  
  1604.           To use extended memory an XMS driver such as HIMEM.SYS (available
  1605.           free from Microsoft) must be installed as well as sufficient
  1606.           extended memory to store the bulk of the program and data.
  1607.  
  1608.  
  1609.           8.10  Convert Nested - /N
  1610.  
  1611.  
  1612.           If this option is on, any archives nested within an archive being
  1613.           converted will also be converted.  All nested archive types
  1614.           supported will be converted to the default type.  Nested archives
  1615.           are left unchanged (and untested!) if this option is off.
  1616.  
  1617.  
  1618.           8.11  Keep Original Archive Format - /O
  1619.  
  1620.  
  1621.           When on, all archives are repacked, but they retain their
  1622.           original archive type.  Thus, a ZIP file will be repacked as a
  1623.           ZIP, a LZH file will be repacked as a LZH, etc., regardless of
  1624.           the default archive type.  Nested archives will be converted to
  1625.           the parent archive's type if the /N switch is enabled, otherwise
  1626.           the nested archive will be untouched (and untested!).  Self-
  1627.  
  1628.  
  1629.  
  1630.           Chapter 8. Command Line Options                           Page 25
  1631.  
  1632.  
  1633.  
  1634.  
  1635.  
  1636.  
  1637.           extracting archives will be converted to the same type but
  1638.           without the SFX program code.
  1639.  
  1640.           Using this switch without the AGE= option could result in
  1641.           archives being processed several times if you use a wildcard for
  1642.           the extension.  While this doesn't hurt anything it does waste
  1643.           time unnecessarily.  This problem won't occur if you move
  1644.           archives to a new subdirectory after processing them with ZZAP.
  1645.  
  1646.  
  1647.           8.12  Prevent Overwriting - /P
  1648.  
  1649.  
  1650.           By default an existing archive can be overwritten when
  1651.           converting.  For example, if both TEST.ZIP and TEST.LZH exist and
  1652.           you convert TEST.LZH to a ZIP file, the original TEST.ZIP will be
  1653.           replaced by the new ZIP file (formerly TEST.LZH).  If the /P
  1654.           option is turned on it will prevent this from occurring, in fact,
  1655.           any archive that would cause an overwrite would be completely
  1656.           ignored, without any status message being displayed.
  1657.  
  1658.           This option has no effect when using the Test Only mode (/T).
  1659.  
  1660.  
  1661.           8.13  Subdirectory Recursion - /R
  1662.  
  1663.  
  1664.           If you have multiple subdirectories with archives you need to
  1665.           convert, you can either process each subdirectory individually or
  1666.           use the recursion feature of ZZAP.  Subdirectory recursion means
  1667.           ZZAP will start at a given subdirectory and convert all archives
  1668.           in it and all archives in any child subdirectories.  This feature
  1669.           is especially handy when you have a Bulletin Board System with a
  1670.           large number of specialized file areas.
  1671.  
  1672.           Subdirectory Recursion is invoked by the /R command line options.
  1673.           The following are valid command lines:
  1674.  
  1675.                          ZZAP /R+ \FILES\T*.ZOO
  1676.                          ZZAP /R+ \*.ARC
  1677.                          ZZAP /R *.PAK
  1678.                          ZZAP /R+/V+ *.*
  1679.  
  1680.  
  1681.           8.14  Strip Attributes - /S
  1682.  
  1683.  
  1684.           The /S options will strip the HIDDEN, SYSTEM, and READ-ONLY
  1685.           attributes from all files contained in the archive before adding
  1686.           the files to the new archive.  Note that most archiving programs
  1687.           do not support unusual attributes and will simply ignore files
  1688.           containing these three attributes.  You should use either the /A
  1689.           or /S command if there is any chance of any of these three
  1690.           attributes being run across.
  1691.  
  1692.  
  1693.  
  1694.           Page 26                           Chapter 8. Command Line Options
  1695.  
  1696.  
  1697.  
  1698.  
  1699.  
  1700.  
  1701.           Turning this option on will cause the /A option to be turned off.
  1702.  
  1703.           This option has no effect when using the Test Only mode (/T).
  1704.  
  1705.  
  1706.           8.15  Test Only - /T
  1707.  
  1708.  
  1709.           If you merely wish to test the integrity of an archive and
  1710.           possibly run a virus check use the /T switch.  All normal steps
  1711.           will be executed with the exception of the creation of the new
  1712.           archive.
  1713.  
  1714.           The date/time stamp of a archives will not be changed during the
  1715.           Test mode unless a /D command is explicitly stated, either in the
  1716.           configuration file with the OPTIONS= command, or on the command
  1717.           line.
  1718.  
  1719.           This feature would be more useful with SDN archives if PAK would
  1720.           return a nonzero exit code if the security envelope was missing.
  1721.           Unfortunately, as of version 2.10 it returns a code of zero as
  1722.           long as the archive is not corrupted (beyond the missing security
  1723.           envelope).
  1724.  
  1725.  
  1726.           8.16  Virus Scan - /V
  1727.  
  1728.  
  1729.           The /V option will enable the virus scan option.  You must have
  1730.           version 39 or greater of McAfee Associates virus scanning program
  1731.           SCAN.EXE placed on your execution PATH.  If a virus is detected
  1732.           the archive will be treated as corrupted and an error message
  1733.           will be displayed and placed in the log file (if enabled).
  1734.  
  1735.           See also the SCANOPT= configuration file command.
  1736.  
  1737.  
  1738.           8.17  Self-extracting Archives - /X
  1739.  
  1740.  
  1741.           Enables or disables the processing of self-extracting archives
  1742.           when a wildcard is specified for the file extension.  When
  1743.           enabled, files with the extension of EXE or COM will be checked
  1744.           to see if they are self-extracting archives as defined with the
  1745.           SFX= command.
  1746.  
  1747.           Files contained inside an archive are never checked as SFX files.
  1748.           Any EXE or COM program will be treated as a corrupted archive if
  1749.           it is not self-extracting.
  1750.  
  1751.           Examples:
  1752.  
  1753.                     zzap /t *.exe
  1754.  
  1755.  
  1756.  
  1757.  
  1758.           Chapter 8. Command Line Options                           Page 27
  1759.  
  1760.  
  1761.  
  1762.  
  1763.  
  1764.  
  1765.           The /X switch was not required since an explicit extension was
  1766.           specified.
  1767.  
  1768.                     zzap /x *.*
  1769.  
  1770.           All archive types are converted to the default archive type.  EXE
  1771.           and COM programs are also converted if they are self-extracting.
  1772.  
  1773.  
  1774.           8.18  Enable/Disable I/O Redirection - /Z
  1775.  
  1776.  
  1777.           Turning this option off disables all I/O redirection.  ZZAP is
  1778.           configured to redirect all the output of the external programs to
  1779.           the NULL device to keep a clean screen.  When you are having a
  1780.           problem with program configuration it is often helpful to turn
  1781.           off the redirection so you can see each phase of the conversion
  1782.           process.  Using this command line switch is much easier than
  1783.           editing the configuration file to remove the redirection
  1784.           commands.
  1785.  
  1786.           This option is ON by default.
  1787.  
  1788.  
  1789.  
  1790.  
  1791.  
  1792.  
  1793.  
  1794.  
  1795.  
  1796.  
  1797.  
  1798.  
  1799.  
  1800.  
  1801.  
  1802.  
  1803.  
  1804.  
  1805.  
  1806.  
  1807.  
  1808.  
  1809.  
  1810.  
  1811.  
  1812.  
  1813.  
  1814.  
  1815.  
  1816.  
  1817.  
  1818.  
  1819.  
  1820.  
  1821.  
  1822.           Page 28                           Chapter 8. Command Line Options
  1823.  
  1824.  
  1825.  
  1826.  
  1827.  
  1828.  
  1829.  
  1830.  
  1831.  
  1832.                                     Chapter Nine
  1833.  
  1834.                            Locating The Configuration File
  1835.  
  1836.  
  1837.           ZZAP will try it's best to locate the configuration file.  Upon
  1838.           execution it searches for the configuration file in the following
  1839.           order:
  1840.  
  1841.              1.  The current subdirectory.
  1842.              2.  The Subdirectory defined by the environment variable
  1843.                  ZZAP=, e.g. ZZAP=C:\BIN.
  1844.              3.  The subdirectory ZZAP.EXE resides in (DOS 3.x only).
  1845.              4.  Each subdirectory defined by PATH in the environment.
  1846.  
  1847.           If you wish to keep the configuration file in a directory not on
  1848.           the PATH and still be able to execute ZZAP from any subdirectory
  1849.           you should set the environment variable:
  1850.  
  1851.                     SET ZZAP=C:\STUFF
  1852.  
  1853.           If the configuration file can not be found ZZAP will halt with an
  1854.           error.
  1855.  
  1856.  
  1857.  
  1858.  
  1859.  
  1860.  
  1861.  
  1862.  
  1863.  
  1864.  
  1865.  
  1866.  
  1867.  
  1868.  
  1869.  
  1870.  
  1871.  
  1872.  
  1873.  
  1874.  
  1875.  
  1876.  
  1877.  
  1878.  
  1879.  
  1880.  
  1881.  
  1882.  
  1883.  
  1884.  
  1885.  
  1886.           Chapter 9. Command Line Options                           Page 29
  1887.  
  1888.  
  1889.  
  1890.  
  1891.  
  1892.  
  1893.  
  1894.  
  1895.  
  1896.  
  1897.  
  1898.  
  1899.  
  1900.  
  1901.  
  1902.  
  1903.  
  1904.  
  1905.  
  1906.  
  1907.  
  1908.  
  1909.  
  1910.  
  1911.  
  1912.  
  1913.  
  1914.  
  1915.  
  1916.  
  1917.  
  1918.  
  1919.  
  1920.  
  1921.  
  1922.  
  1923.  
  1924.  
  1925.  
  1926.  
  1927.  
  1928.  
  1929.  
  1930.  
  1931.  
  1932.  
  1933.  
  1934.  
  1935.  
  1936.  
  1937.  
  1938.  
  1939.  
  1940.  
  1941.  
  1942.  
  1943.  
  1944.  
  1945.  
  1946.  
  1947.  
  1948.  
  1949.  
  1950.           Page 30                Chapter 9. Locating The Configuration File
  1951.  
  1952.  
  1953.  
  1954.  
  1955.  
  1956.  
  1957.  
  1958.  
  1959.  
  1960.                                      Chapter Ten
  1961.  
  1962.                                     Running ZZAP
  1963.  
  1964.  
  1965.           ZZAP is fully configured for the major archiving programs.  The
  1966.           only change in the configuration file you may need to make is the
  1967.           EXT= command to set your preferred default archive type.
  1968.  
  1969.           To run ZZAP, simply type ZZAP followed by the filename (wild-
  1970.           cards allowed).  The filename MUST have an extension.  If the
  1971.           extension is wild (*) then all archive types defined by UNARC=
  1972.           commands will be converted to the new archive type as defined by
  1973.           ARC=.  The following are legal:
  1974.  
  1975.                     ZZAP *.ZOO
  1976.  
  1977.           Converts all ZOO files in the default subdirectory to the new
  1978.           archive type or repacks ZOO files if that is the default
  1979.           extension.
  1980.  
  1981.                     ZZAP \UPLOADS\AFILE.ZIP
  1982.  
  1983.           Converts AFILE.ZIP, located in the \UPLOADS subdirectory, to the
  1984.           new archiving type.
  1985.  
  1986.                     ZZAP *.*
  1987.  
  1988.           Converts all archive types that are not the default format, in
  1989.           the current subdirectory, to the new archive type.
  1990.  
  1991.           When using a wild-card for the extension archives with the
  1992.           default extension will be ignored.  To repack archives to the
  1993.           same type, e.g. ZIP to ZIP, you must explicitly state the
  1994.           extension.
  1995.  
  1996.                     ZZAP *.ZIP
  1997.  
  1998.           If you wish to repack an archive to the same type you must
  1999.           explicitly name the extension as the default archive type is
  2000.           ignored when doing a wild card conversion (this is to avoid
  2001.           repacking the same archives every time you run ZZAP).
  2002.  
  2003.           If your default archive type is LZH simply give that as the
  2004.           extension to convert:
  2005.  
  2006.                     ZZAP *.LZH
  2007.  
  2008.           When repacking an archive, all archive and file comments are
  2009.           lost.
  2010.  
  2011.  
  2012.  
  2013.  
  2014.           Chapter 10. Running ZZAP                                  Page 31
  2015.  
  2016.  
  2017.  
  2018.  
  2019.  
  2020.  
  2021.           Note that the /P and /K options are ignored when doing a repack.
  2022.  
  2023.           ZZAP can also accept multiple file names on the command line:
  2024.  
  2025.                     ZZAP /V *.ZIP *.*
  2026.  
  2027.           Assuming a default archive type of ZIP, this example first
  2028.           repacks all ZIP files (and does a virus check) then converts all
  2029.           other types to ZIP format, also with a virus check.  If the order
  2030.           had been changed, "ZZAP /V *.* *.ZIP", all archives would be
  2031.           converted to ZIP format then all ZIP files would be repacked,
  2032.           clearly not the intention.
  2033.  
  2034.  
  2035.  
  2036.  
  2037.  
  2038.  
  2039.  
  2040.  
  2041.  
  2042.  
  2043.  
  2044.  
  2045.  
  2046.  
  2047.  
  2048.  
  2049.  
  2050.  
  2051.  
  2052.  
  2053.  
  2054.  
  2055.  
  2056.  
  2057.  
  2058.  
  2059.  
  2060.  
  2061.  
  2062.  
  2063.  
  2064.  
  2065.  
  2066.  
  2067.  
  2068.  
  2069.  
  2070.  
  2071.  
  2072.  
  2073.  
  2074.  
  2075.  
  2076.  
  2077.  
  2078.           Page 32                                  Chapter 10. Running ZZAP
  2079.  
  2080.  
  2081.  
  2082.  
  2083.  
  2084.  
  2085.  
  2086.  
  2087.  
  2088.                                    Chapter Eleven
  2089.  
  2090.                                    Nested Archives
  2091.  
  2092.  
  2093.           It is not uncommon to find archives nested inside an archive.  A
  2094.           program that includes source code may have the source code
  2095.           archived and placed within the main archive.  ZZAP will properly
  2096.           handle this situation and convert the nested archives to the new
  2097.           format.  If fact, it will even convert nested archives of a
  2098.           differing types.  Theoretically, an unlimited amount of nesting
  2099.           can be handled, only limited by available memory, but this has
  2100.           only been tested one deep.
  2101.  
  2102.           If you do not wish nested archives to be converted you should use
  2103.           the /N- option on the command line or place it in the
  2104.           configuration file using the SWITCH= command.
  2105.  
  2106.  
  2107.  
  2108.  
  2109.  
  2110.  
  2111.  
  2112.  
  2113.  
  2114.  
  2115.  
  2116.  
  2117.  
  2118.  
  2119.  
  2120.  
  2121.  
  2122.  
  2123.  
  2124.  
  2125.  
  2126.  
  2127.  
  2128.  
  2129.  
  2130.  
  2131.  
  2132.  
  2133.  
  2134.  
  2135.  
  2136.  
  2137.  
  2138.  
  2139.  
  2140.  
  2141.  
  2142.           Chapter 11. Running ZZAP                                  Page 33
  2143.  
  2144.  
  2145.  
  2146.  
  2147.  
  2148.  
  2149.  
  2150.  
  2151.  
  2152.  
  2153.  
  2154.  
  2155.  
  2156.  
  2157.  
  2158.  
  2159.  
  2160.  
  2161.  
  2162.  
  2163.  
  2164.  
  2165.  
  2166.  
  2167.  
  2168.  
  2169.  
  2170.  
  2171.  
  2172.  
  2173.  
  2174.  
  2175.  
  2176.  
  2177.  
  2178.  
  2179.  
  2180.  
  2181.  
  2182.  
  2183.  
  2184.  
  2185.  
  2186.  
  2187.  
  2188.  
  2189.  
  2190.  
  2191.  
  2192.  
  2193.  
  2194.  
  2195.  
  2196.  
  2197.  
  2198.  
  2199.  
  2200.  
  2201.  
  2202.  
  2203.  
  2204.  
  2205.  
  2206.           Page 34                               Chapter 11. Nested Archives
  2207.  
  2208.  
  2209.  
  2210.  
  2211.  
  2212.  
  2213.  
  2214.  
  2215.  
  2216.                                    Chapter Twelve
  2217.  
  2218.                                When Good Files Go Bad
  2219.  
  2220.  
  2221.           If a file is found to be corrupted further processing on that
  2222.           file is halted and the archive is renamed to have a "!" as the
  2223.           second character of the extension, for example, "Z!P".  If the
  2224.           corrupted archive is nested only the parent archive is renamed.
  2225.           You will have to manually unarc the archive to find the actual
  2226.           problem.
  2227.  
  2228.           ZZAP assumes that a file is corrupted when the "EXIT CODE" for
  2229.           the unarc program is nonzero.
  2230.  
  2231.           PAK version 1.0 is known to not return a proper error code so
  2232.           ZZAP will not work with it.  I'm not sure which version they
  2233.           fixed the bug in.  I do know that it works properly with PAK
  2234.           version 1.6.
  2235.  
  2236.           Just because ZZAP says an archive is corrupted does not
  2237.           necessarily mean it is true.  When the archiving program returns
  2238.           a nonzero exit code ZZAP has know way of knowing what the code
  2239.           represents.  Some of the reasons an archive might be flagged as
  2240.           bad are:
  2241.  
  2242.               o  Archive is truly corrupted.
  2243.  
  2244.               o  Insufficient memory, there was enough memory to execute
  2245.                  the archiving program but not enough for the archiving
  2246.                  program to properly process the archive.
  2247.  
  2248.               o  Insufficient disk space.  A very large archive can quickly
  2249.                  eat up disk space.  Even a seemingly small archive can
  2250.                  suddenly expand into a big file.  Font files, for example,
  2251.                  typically compress to only 5% of the original size.  A 72
  2252.                  point font can take more than 1Meg of disk space while
  2253.                  requiring less than 100k when compressed.  Keep in mind
  2254.                  that ZZAP requires enough disk space to hold the original
  2255.                  archive, the expanded files, and the new archive.
  2256.                  Therefore, a 100k archive that expands to 500k and
  2257.                  recompresses to 75k will temporarily require 675k of disk
  2258.                  space.
  2259.  
  2260.               o  Invalid archive version.  When a new version of an archive
  2261.                  program is released it often includes improved compression
  2262.                  techniques that older versions of the program can not
  2263.                  handle.  Upgrade your archive software.
  2264.  
  2265.  
  2266.  
  2267.  
  2268.  
  2269.  
  2270.           Chapter 12. When Good Files Go Bad                        Page 35
  2271.  
  2272.  
  2273.  
  2274.  
  2275.  
  2276.  
  2277.               o  Command line options as defined in the configuration file
  2278.                  are incorrect.  Double check each ARC= and UNARC= command
  2279.                  in the configuration file.
  2280.  
  2281.               o  Archive program is corrupted.  Make sure that your
  2282.                  archiving programs are working properly.
  2283.  
  2284.               o  Disk error.  If your disk has a bad sector it could result
  2285.                  in a unsuccessful archiving or unarchiving.
  2286.  
  2287.  
  2288.  
  2289.  
  2290.  
  2291.  
  2292.  
  2293.  
  2294.  
  2295.  
  2296.  
  2297.  
  2298.  
  2299.  
  2300.  
  2301.  
  2302.  
  2303.  
  2304.  
  2305.  
  2306.  
  2307.  
  2308.  
  2309.  
  2310.  
  2311.  
  2312.  
  2313.  
  2314.  
  2315.  
  2316.  
  2317.  
  2318.  
  2319.  
  2320.  
  2321.  
  2322.  
  2323.  
  2324.  
  2325.  
  2326.  
  2327.  
  2328.  
  2329.  
  2330.  
  2331.  
  2332.  
  2333.  
  2334.           Page 36                        Chapter 12. When Good Files Go Bad
  2335.  
  2336.  
  2337.  
  2338.  
  2339.  
  2340.  
  2341.  
  2342.  
  2343.  
  2344.                                   Chapter Thirteen
  2345.  
  2346.                               External Event Conversion
  2347.  
  2348.  
  2349.           Some bulletin board systems support timed "events".  These events
  2350.           are used to automate the operation of the board.  Using an event
  2351.           can make it possible for the bulletin board to automatically
  2352.           handle the conversion of any archive type to the type supported
  2353.           by the board.  A BBS that automatically converts archive types
  2354.           could allow the callers to upload archives of virtually any type.
  2355.  
  2356.           Under FrontDoor, for example, you can use an external event for
  2357.           this process.  An external event causes FrontDoor to terminate
  2358.           with a specified error level.  The error level can then be
  2359.           queried to decide what should be done.
  2360.  
  2361.           Follows is a fragment from a possible batch file to do just this.
  2362.           This example assumes all new uploads are placed in the
  2363.           subdirectory "C:\UPLOADS".
  2364.  
  2365.                IF ERRORLEVEL 87 GOTO do_this
  2366.                IF ERRORLEVEL 86 GOTO arc_convert
  2367.                IF ERRORLEVEL 85 GOTO do_that
  2368.  
  2369.                REM convert all archive types to ZIP files
  2370.                :arc_convert
  2371.                  zzap /f+ c:\uploads\*.*
  2372.  
  2373.                GOTO run_fd
  2374.  
  2375.           There is one problem with this type of system - what happens to
  2376.           the descriptions?  Some BBS programs automatically place the file
  2377.           name and description in an ASCII file.  If the file is then
  2378.           converted the filename is changed and would no longer match the
  2379.           name given with the description.  The /F option and the QFIX
  2380.           program (included) handle the conversion for QuickBBS format file
  2381.           list.
  2382.  
  2383.           See QFIX.DOC for further information.  See also the description
  2384.           of the /C options as well as the configuration file option FIXER=
  2385.           and other related options.
  2386.  
  2387.  
  2388.  
  2389.  
  2390.  
  2391.  
  2392.  
  2393.  
  2394.  
  2395.  
  2396.  
  2397.  
  2398.           Chapter 13. When Good Files Go Bad                        Page 37
  2399.  
  2400.  
  2401.  
  2402.  
  2403.  
  2404.  
  2405.  
  2406.  
  2407.  
  2408.  
  2409.  
  2410.  
  2411.  
  2412.  
  2413.  
  2414.  
  2415.  
  2416.  
  2417.  
  2418.  
  2419.  
  2420.  
  2421.  
  2422.  
  2423.  
  2424.  
  2425.  
  2426.  
  2427.  
  2428.  
  2429.  
  2430.  
  2431.  
  2432.  
  2433.  
  2434.  
  2435.  
  2436.  
  2437.  
  2438.  
  2439.  
  2440.  
  2441.  
  2442.  
  2443.  
  2444.  
  2445.  
  2446.  
  2447.  
  2448.  
  2449.  
  2450.  
  2451.  
  2452.  
  2453.  
  2454.  
  2455.  
  2456.  
  2457.  
  2458.  
  2459.  
  2460.  
  2461.  
  2462.           Page 38                     Chapter 13. External Event Conversion
  2463.  
  2464.  
  2465.  
  2466.  
  2467.  
  2468.  
  2469.  
  2470.  
  2471.  
  2472.                                      Appendix A
  2473.  
  2474.                                 Sysop Recommendations
  2475.  
  2476.  
  2477.           If your BBS supports them, the following system is recommended:
  2478.  
  2479.               -  When a new file is uploaded set its date to "Today's
  2480.                  date", using a TOUCH program (or whatever means).
  2481.  
  2482.               -  Set up an midnight "event" to process all new uploads.
  2483.  
  2484.               -  Use the AGE=2 command in ZZAP.CFG.
  2485.  
  2486.               -  Run ZZAP with /T /DO to test files already in the default
  2487.                  archive format and retain the original date.
  2488.  
  2489.               -  Run ZZAP with /DO to convert all archives to the default
  2490.                  format and retain the original date.
  2491.  
  2492.           An alternate configuration is:
  2493.  
  2494.               -  Create a subdirectory to hold of "Today's" uploads.
  2495.  
  2496.               -  Create a subdirectory to hold all New (or this month's)
  2497.                  uploads.
  2498.  
  2499.               -  Set your system to convert/test archives at any desired
  2500.                  time.
  2501.  
  2502.               -  At conversion/test time:
  2503.  
  2504.                      *  Run ZZAP with /T to test all files already in the
  2505.                         default archive format.  Use your preferred date
  2506.                         (/D) option.
  2507.  
  2508.                      *  Run ZZAP to convert all archives to the default
  2509.                         format. Use your preferred date (/D) option.
  2510.  
  2511.               -  Alternately:
  2512.  
  2513.                      *  Use the /O switch to repack all archives, keeping
  2514.                         their original archive formats.  Use your preferred
  2515.                         /D date/time option.
  2516.  
  2517.               -  Move all freshly tested/converted archive to the
  2518.                  Monthly/New uploads subdirectory.
  2519.  
  2520.  
  2521.  
  2522.  
  2523.  
  2524.  
  2525.  
  2526.           Appendix A. Sysop Recommendations                         Page 39
  2527.  
  2528.  
  2529.  
  2530.  
  2531.  
  2532.  
  2533.  
  2534.  
  2535.  
  2536.  
  2537.  
  2538.  
  2539.  
  2540.  
  2541.  
  2542.  
  2543.  
  2544.  
  2545.  
  2546.  
  2547.  
  2548.  
  2549.  
  2550.  
  2551.  
  2552.  
  2553.  
  2554.  
  2555.  
  2556.  
  2557.  
  2558.  
  2559.  
  2560.  
  2561.  
  2562.  
  2563.  
  2564.  
  2565.  
  2566.  
  2567.  
  2568.  
  2569.  
  2570.  
  2571.  
  2572.  
  2573.  
  2574.  
  2575.  
  2576.  
  2577.  
  2578.  
  2579.  
  2580.  
  2581.  
  2582.  
  2583.  
  2584.  
  2585.  
  2586.  
  2587.  
  2588.  
  2589.  
  2590.           Page 40                         Appendix A. Sysop Recommendations
  2591.  
  2592.  
  2593.  
  2594.  
  2595.  
  2596.  
  2597.  
  2598.  
  2599.  
  2600.                                      Appendix B
  2601.  
  2602.                                      Exit Codes
  2603.  
  2604.  
  2605.           ZZAP will return exit codes upon termination.  These exit codes
  2606.           can be used by a batch file to decide what steps should be taken
  2607.           after running ZZAP.  The exit codes are
  2608.  
  2609.                    0           Normal termination - no errors, viruses, or
  2610.                                corrupted archives.
  2611.                    1           Virus detected.
  2612.                    2           Corrupted archive.
  2613.                    3           Configuration file not found.
  2614.                    4           Not configured for given target extension.
  2615.                                If you use the /O option ZZAP will continue
  2616.                                processing other archives.  This is so other
  2617.                                archive types can still be repacked.
  2618.                    5           Couldn't create temporary directory.
  2619.                    6           Other fatal error.
  2620.  
  2621.           There is a possibility for both a corrupted archive and a virused
  2622.           archive to have been detected (bad day!).  In this case an exit
  2623.           code of 1 (virus detected) will be returned, specifying the more
  2624.           critical situation.
  2625.  
  2626.  
  2627.  
  2628.  
  2629.  
  2630.  
  2631.  
  2632.  
  2633.  
  2634.  
  2635.  
  2636.  
  2637.  
  2638.  
  2639.  
  2640.  
  2641.  
  2642.  
  2643.  
  2644.  
  2645.  
  2646.  
  2647.  
  2648.  
  2649.  
  2650.  
  2651.  
  2652.  
  2653.  
  2654.           Appendix B. Exit Codes                                    Page 41
  2655.  
  2656.  
  2657.  
  2658.  
  2659.  
  2660.  
  2661.  
  2662.  
  2663.  
  2664.  
  2665.  
  2666.  
  2667.  
  2668.  
  2669.  
  2670.  
  2671.  
  2672.  
  2673.  
  2674.  
  2675.  
  2676.  
  2677.  
  2678.  
  2679.  
  2680.  
  2681.  
  2682.  
  2683.  
  2684.  
  2685.  
  2686.  
  2687.  
  2688.  
  2689.  
  2690.  
  2691.  
  2692.  
  2693.  
  2694.  
  2695.  
  2696.  
  2697.  
  2698.  
  2699.  
  2700.  
  2701.  
  2702.  
  2703.  
  2704.  
  2705.  
  2706.  
  2707.  
  2708.  
  2709.  
  2710.  
  2711.  
  2712.  
  2713.  
  2714.  
  2715.  
  2716.  
  2717.  
  2718.           Page 42                                    Appendix B. Exit Codes
  2719.  
  2720.  
  2721.  
  2722.  
  2723.  
  2724.  
  2725.  
  2726.  
  2727.  
  2728.                                      Appendix C
  2729.  
  2730.                                    Acknowledgments
  2731.  
  2732.  
  2733.           Thanks to:
  2734.  
  2735.               o  Ken Doebler and Dan Geatons for their many suggestions.
  2736.  
  2737.               o  Randall Greylock (1:321/202.4) for pointing out an oddity
  2738.                  with ZOO and many fine suggestions which were implemented.
  2739.  
  2740.               o  Charles Falconer (1:141/488) for pointing out that I
  2741.                  didn't handle unusual file attributes (which LHARC and
  2742.                  PKZIP archives may retain) and other suggestions.
  2743.  
  2744.  
  2745.  
  2746.  
  2747.  
  2748.  
  2749.  
  2750.  
  2751.  
  2752.  
  2753.  
  2754.  
  2755.  
  2756.  
  2757.  
  2758.  
  2759.  
  2760.  
  2761.  
  2762.  
  2763.  
  2764.  
  2765.  
  2766.  
  2767.  
  2768.  
  2769.  
  2770.  
  2771.  
  2772.  
  2773.  
  2774.  
  2775.  
  2776.  
  2777.  
  2778.  
  2779.  
  2780.  
  2781.  
  2782.           Appendix C. Acknowledgments                               Page 43
  2783.  
  2784.  
  2785.  
  2786.  
  2787.  
  2788.  
  2789.  
  2790.  
  2791.  
  2792.  
  2793.  
  2794.  
  2795.  
  2796.  
  2797.  
  2798.  
  2799.  
  2800.  
  2801.  
  2802.  
  2803.  
  2804.  
  2805.  
  2806.  
  2807.  
  2808.  
  2809.  
  2810.  
  2811.  
  2812.  
  2813.  
  2814.  
  2815.  
  2816.  
  2817.  
  2818.  
  2819.  
  2820.  
  2821.  
  2822.  
  2823.  
  2824.  
  2825.  
  2826.  
  2827.  
  2828.  
  2829.  
  2830.  
  2831.  
  2832.  
  2833.  
  2834.  
  2835.  
  2836.  
  2837.  
  2838.  
  2839.  
  2840.  
  2841.  
  2842.  
  2843.  
  2844.  
  2845.  
  2846.           Page 44                               Appendix C. Acknowledgments
  2847.  
  2848.  
  2849.  
  2850.  
  2851.  
  2852.  
  2853.  
  2854.  
  2855.  
  2856.                                      Appendix D
  2857.  
  2858.                                My Lawyer Made Me Do It
  2859.  
  2860.  
  2861.               -  DWC is copyright (c)1986,87,88 Dean W. Cooper.
  2862.               -  LHARC and ICE are copyright (c)1988,89 Haruyasu
  2863.                  Yoshizaki-san.
  2864.               -  LUE is copyright (c)1985 Vernon D. Buerg.
  2865.               -  PAK is copyright (c)1988,89 NoGate Consulting
  2866.               -  GSARC is copyright (c)1988 NoGate Consulting
  2867.               -  PKARC/PKXARC and PKPAK/PKUNPAK are copyright (c)1986,87,88
  2868.                  PKWare, Inc.
  2869.               -  PKZIP/PKUNZIP are copyright (c)1989 PkWare, Inc.
  2870.               -  ZOO is copyright (c)1988 Rahul Dhesi
  2871.               -  FrontDoor is copyright (c)1988,89 Scandinavian PC Systems
  2872.                  and InterZone Software, Inc.
  2873.               -  DIRFIX is copyright (c)1990 Gary W. Funk.
  2874.  
  2875.  
  2876.  
  2877.  
  2878.  
  2879.  
  2880.  
  2881.  
  2882.  
  2883.  
  2884.  
  2885.  
  2886.  
  2887.  
  2888.  
  2889.  
  2890.  
  2891.  
  2892.  
  2893.  
  2894.  
  2895.  
  2896.  
  2897.  
  2898.  
  2899.  
  2900.  
  2901.  
  2902.  
  2903.  
  2904.  
  2905.  
  2906.  
  2907.  
  2908.  
  2909.  
  2910.           Appendix D. My Lawyer Made Me Do It                       Page 45
  2911.  
  2912.  
  2913.  
  2914.  
  2915.  
  2916.  
  2917.  
  2918.  
  2919.  
  2920.  
  2921.  
  2922.  
  2923.  
  2924.  
  2925.  
  2926.  
  2927.  
  2928.  
  2929.  
  2930.  
  2931.  
  2932.  
  2933.  
  2934.  
  2935.  
  2936.  
  2937.  
  2938.  
  2939.  
  2940.  
  2941.  
  2942.  
  2943.  
  2944.  
  2945.  
  2946.  
  2947.  
  2948.  
  2949.  
  2950.  
  2951.  
  2952.  
  2953.  
  2954.  
  2955.  
  2956.  
  2957.  
  2958.  
  2959.  
  2960.  
  2961.  
  2962.  
  2963.  
  2964.  
  2965.  
  2966.  
  2967.  
  2968.  
  2969.  
  2970.  
  2971.  
  2972.  
  2973.  
  2974.           Page 46                       Appendix D. My Lawyer Made Me Do It
  2975.  
  2976.  
  2977.  
  2978.  
  2979.  
  2980.  
  2981.  
  2982.  
  2983.  
  2984.                                      Appendix E
  2985.  
  2986.                                    Version History
  2987.  
  2988.  
  2989.           Version 6.5 Changes
  2990.           ===================
  2991.  
  2992.               -  Further enhancements to the SFX routines.  Added the
  2993.                  NONSFX= and NESTEDSFX= configuration file commands.
  2994.  
  2995.           Version 6.4 Changes
  2996.           ===================
  2997.  
  2998.               -  Added routines to detect and process self-extracting
  2999.                  archives (SFX).
  3000.               -  Changed the /X switch to /M, /X is now used to enable SFX
  3001.                  support.
  3002.  
  3003.           Version 6.3 Changes
  3004.           ===================
  3005.  
  3006.               -  Added the /O option (different from the older date related
  3007.                  switch).
  3008.  
  3009.           Version 6.2 Changes
  3010.           ===================
  3011.  
  3012.               -  The log file must now be specified in the environment.
  3013.                  This allows ZZAP to log errors before the configuration
  3014.                  file is read.
  3015.               -  Can now read a file containing a list of files to convert.
  3016.               -  Corrected an error in initialization that caused the /C+
  3017.                  switch to be ignored in some cases.
  3018.  
  3019.           Version 6.1 Changes
  3020.           ===================
  3021.  
  3022.               -  Added the /B command line switch and support for
  3023.                  subdirectory information in archives.
  3024.               -  Slightly changed the way temporary files are handled to
  3025.                  improve support on networked multi-line BBS's.
  3026.  
  3027.  
  3028.  
  3029.  
  3030.  
  3031.  
  3032.  
  3033.  
  3034.  
  3035.  
  3036.  
  3037.  
  3038.           Appendix E. Version History                               Page 47
  3039.  
  3040.  
  3041.  
  3042.  
  3043.  
  3044.  
  3045.           Version 6.0 Changes
  3046.           ===================
  3047.  
  3048.               -  Added the PRE=, MID=, and POST= configuration file
  3049.                  commands.
  3050.               -  Added support for %COMSPEC% when declaring programs to
  3051.                  execute.
  3052.               -  Added support for >> type output redirection.
  3053.               -  Changed /T to /D.
  3054.               -  A new test mode has been added.  Using /T now initiates a
  3055.                  test mode, no new archives are created.
  3056.               -  The date/time stamp is left unaltered when using the /T
  3057.                  command unless a /D option is explicitly stated.
  3058.               -  Instead of searching the path for all of the UNARC
  3059.                  programs at start-up, which can be a slow process if more
  3060.                  than a few are defined, ZZAP now only searches for the
  3061.                  programs when actually required.  The full path, if found,
  3062.                  is saved so that subsequent searches are not required.
  3063.  
  3064.           Version 5.9 Changes
  3065.           ===================
  3066.  
  3067.               -  Changed the way temporary files are handled, ZZAP can now
  3068.                  work with archive programs that insist on using a specific
  3069.                  extension.
  3070.                  Duplicate archives are not deleted until the new archive
  3071.                  has been successfully created.
  3072.               -  Added a few new error messages in the log file.
  3073.               -  When I added input redirection capabilities I also
  3074.                  introduced a bug that would could cause the wrong files to
  3075.                  be closed when turning off redirection after an execute.
  3076.                  This is now fixed.
  3077.  
  3078.           Version 5.8 Changes
  3079.           ===================
  3080.  
  3081.               -  Removed the /O command line option and replaced it with
  3082.                  the more versatile /T option.
  3083.               -  Added the /I (ignore file age) command to the command line
  3084.                  switches.
  3085.               -  Added the AGE= command to the configuration file.  ZZAP
  3086.                  can now be configured to skip processing of files that are
  3087.                  more than a specified number of days old.
  3088.               -  Added an index to the documents
  3089.               -  ZZAP is now DesqView aware.
  3090.  
  3091.  
  3092.  
  3093.  
  3094.  
  3095.  
  3096.  
  3097.  
  3098.  
  3099.  
  3100.  
  3101.  
  3102.           Page 48                               Appendix E. Version History
  3103.  
  3104.  
  3105.  
  3106.  
  3107.  
  3108.  
  3109.           Version 5.7 Changes
  3110.           ===================
  3111.  
  3112.               -  Added support for redirection of input for called
  3113.                  programs.  This will allow you to automatically add
  3114.                  archives comments when converting to some archive formats.
  3115.               -  Deleted the FIXOPT= configuration file command.  Now the
  3116.                  FIXER= command does double duty - defining the program
  3117.                  name and options.
  3118.  
  3119.           Version 5.6 Changes
  3120.           ===================
  3121.  
  3122.               -  Corrected a bug where a bad archive could not be
  3123.                  successfully moved to a "bad directory" as defined by the
  3124.                  BADDIR= configuration option.
  3125.               -  If an archive contains subdirectory information and you
  3126.                  have the unarc option set to create subdirectories, ZZAP
  3127.                  will now handle this in a graceful manner by deleting the
  3128.                  subdirectories that were created, treating the archive as
  3129.                  bad, and logging an appropriate message.  Formerly, ZZAP
  3130.                  would crash when it was unable to remove its temporary
  3131.                  work subdirectory.
  3132.               -  When an archive nested inside another archive is found to
  3133.                  be corrupt, only the parent archive (containing the
  3134.                  corrupt child archive) will be moved to BADDIR instead of
  3135.                  both the parent and child archives.
  3136.               -  Stamped a new bug where a nested archive would be stored
  3137.                  with its temporary name (*.Z!Z) as well as the old
  3138.                  extension, resulting in larger archives.
  3139.  
  3140.           Version 5.5 Changes
  3141.           ===================
  3142.  
  3143.               -  Due to a bug in my code the error code returned by
  3144.                  SCAN.EXE was not being processed correctly.  This could
  3145.                  allow archives with infected programs to slip by.
  3146.               -  Cleaned up the display of error and warning messages.
  3147.               -  The log file is now only date/time stamped if something is
  3148.                  actually done.
  3149.               -  The number of files skipped due to the /P+ option is now
  3150.                  displayed with other status information.
  3151.  
  3152.           Version 5.4 Changes
  3153.           ===================
  3154.  
  3155.               -  Added the /C command line option.
  3156.               -  Added the FIXER=, FIXOPT= and SCANOPT= configuration file
  3157.                  commands.
  3158.               -  Corrupted archives are renamed to have a "!" as the second
  3159.                  character of the extension instead of "BAD" being the
  3160.                  extension.
  3161.  
  3162.  
  3163.  
  3164.  
  3165.  
  3166.           Appendix E. Version History                               Page 49
  3167.  
  3168.  
  3169.  
  3170.  
  3171.  
  3172.  
  3173.           Version 5.3 Changes
  3174.           ===================
  3175.  
  3176.               -  Added support for "%1" to allow the archive file names to
  3177.                  be in any position on the command line.
  3178.               -  Corrected a bug where the /N command line switch was being
  3179.                  ignored.
  3180.               -  Bug corrected where the state of Keep (/K+) and/or
  3181.                  PreventOverwrite (/P+) could be lost if more than one file
  3182.                  is given on the command line.
  3183.               -  On the switch status line, "on" is displayed in high-
  3184.                  intensity.
  3185.               -  Completely changed the way the /F option works and added
  3186.                  the QFIX program.
  3187.               -  Conversion of all archive types by indicating the wild-
  3188.                  card extension (e.g. '*.*' was not working, corrected as
  3189.                  of 5.3b.
  3190.  
  3191.           Version 5.2 Changes
  3192.           ===================
  3193.  
  3194.               -  Fixed a bug where the stack would overflow and trash some
  3195.                  internal data.
  3196.               -  Fixed a bug where if /X- was used it wouldn't properly
  3197.                  execute the external programs.
  3198.               -  Removed the ZZAPARC= environmental variable, it is not
  3199.                  longer needed with the addition of the /E command line
  3200.                  switch.
  3201.               -  Added the /N switch (convert nested archives).  Default
  3202.                  ON.
  3203.  
  3204.           Version 5.1 Changes
  3205.           ===================
  3206.  
  3207.               -  Added the SWITCH= configuration file option.
  3208.               -  Changed the way command line options are used.
  3209.  
  3210.           Version 5.0 Changes
  3211.           ===================
  3212.  
  3213.               -  Completely rewrote most of the file searching routines.
  3214.               -  Now supports repacking any archive type, e.g. ZIP to ZIP.
  3215.               -  Added a switch to prevent overwriting of existing
  3216.                  archives.
  3217.  
  3218.  
  3219.  
  3220.  
  3221.  
  3222.  
  3223.  
  3224.  
  3225.  
  3226.  
  3227.  
  3228.  
  3229.  
  3230.           Page 50                               Appendix E. Version History
  3231.  
  3232.  
  3233.  
  3234.  
  3235.  
  3236.  
  3237.           Version 4.8 Changes
  3238.           ===================
  3239.  
  3240.               -  Added support for output redirection.
  3241.               -  ZZAP always thought the bad archive directory (BADDIR=)
  3242.                  didn't exist - whether it did or not.
  3243.               -  Now supports moving a BAD archive to a different drive.
  3244.               -  If BADDIR is defined and the subdirectory exists the file
  3245.                  will be moved their and the extension will NOT be changed
  3246.                  to .BAD.  The extension will be changed to .BAD if BADDIR
  3247.                  is not defined or does not exist.
  3248.  
  3249.           Version 4.7 Changes
  3250.           ===================
  3251.  
  3252.               -  Added the DEFAULT= command in the configuration file.
  3253.               -  Changed the ZZAPARC environmental variable so that it only
  3254.                  requires the file extension.
  3255.               -  Changed the ARC= command in the configuration file so that
  3256.                  multiple archiving programs can be listed.
  3257.               -  Added the /S (strip attributes) command line option.
  3258.               -  Added support for extended memory during archive program
  3259.                  executing.
  3260.               -  The BBS list routine was not working properly if the
  3261.                  filenames in the list file were not upper-case.
  3262.  
  3263.           Version 4.6 Changes
  3264.           ===================
  3265.  
  3266.               -  Added support for virus scanning using McAfee Associates
  3267.                  SCAN.EXE program.
  3268.               -  Added the BADDIR configuration option.
  3269.               -  Improved the error detection code.
  3270.  
  3271.           Version 4.5 Changes
  3272.           ===================
  3273.  
  3274.               -  Added support for multiple file names on the command line.
  3275.               -  Removed bug where ZZAP returned an error message if no
  3276.                  file name was given on the command line.
  3277.  
  3278.           Version 4.4 Changes
  3279.           ===================
  3280.  
  3281.               -  ZZAP wasn't properly reading the exit code of the unarcing
  3282.                  programs.  This resulting in some bad archives slipping
  3283.                  by.
  3284.  
  3285.           Version 4.3 Changes
  3286.           ===================
  3287.  
  3288.               -  Cosmetic changes and code optimization.
  3289.  
  3290.  
  3291.  
  3292.  
  3293.  
  3294.           Appendix E. Version History                               Page 51
  3295.  
  3296.  
  3297.  
  3298.  
  3299.  
  3300.  
  3301.           Version 4.2 Changes
  3302.           ===================
  3303.  
  3304.               -  Trivial B.S. hardly worth mentioning.
  3305.  
  3306.           Version 4.1 Changes
  3307.           ===================
  3308.  
  3309.               -  Corrected a fatal bug introduced in 4.0 that would cause
  3310.                  ZZAP to lose files under PKARC/PKPAK.
  3311.               -  Removed a bug which resulted in the "home" path (DOS 3.x
  3312.                  only) not being located properly.
  3313.  
  3314.           Version 4.0 Changes
  3315.           ===================
  3316.  
  3317.               -  Changed the "/I" option to "/A" - makes more sense.
  3318.                  Log more information about nonstandard file attributes in
  3319.                  the log file.
  3320.               -  Now supports expanded memory (LIM 4.0 only) when shelling,
  3321.                  thus making available more conventional memory when
  3322.                  running the archiving programs.
  3323.  
  3324.  
  3325.  
  3326.  
  3327.  
  3328.  
  3329.  
  3330.  
  3331.  
  3332.  
  3333.  
  3334.  
  3335.  
  3336.  
  3337.  
  3338.  
  3339.  
  3340.  
  3341.  
  3342.  
  3343.  
  3344.  
  3345.  
  3346.  
  3347.  
  3348.  
  3349.  
  3350.  
  3351.  
  3352.  
  3353.  
  3354.  
  3355.  
  3356.  
  3357.  
  3358.           Page 52                               Appendix E. Version History
  3359.  
  3360.  
  3361.  
  3362.  
  3363.  
  3364.  
  3365.  
  3366.  
  3367.  
  3368.                                         Index
  3369.  
  3370.  
  3371.           A                                  F
  3372.           AGE= 24                            File date stamping 13, 21
  3373.           Archive Programs Supported 6       Filter 24
  3374.           Attributes 21                      Fix-up program 12
  3375.             Flag funny 21, 26
  3376.             Strip 21, 22, 26                 H
  3377.                                              Halting ZZAP 5
  3378.           B
  3379.           BBS download list 12               I
  3380.                                              I/O redirection 21
  3381.           C
  3382.           Command Line Options 20            K
  3383.           Command line options               Keep 21, 25
  3384.             /A 21
  3385.             /B 21, 22                        L
  3386.             /C 21, 23                        License Agreement 1
  3387.             /D 13, 21, 23                    List 21, 24
  3388.             /E 21, 23                        Locating The Configuration
  3389.             /F 21, 23, 24                      File 29
  3390.             /I 13, 21, 24                    Log 17
  3391.             /K 21, 25                        Logging ZZAP Activity 17
  3392.             /M 21, 25
  3393.             /N 21, 25                        N
  3394.             /O 21, 25                        Nested Archives 21, 33
  3395.             /P 21, 26
  3396.             /R 21, 26                        O
  3397.             /S 21, 26                        Original Format 21
  3398.             /T 21, 27
  3399.             /V 21, 27                        P
  3400.             /X 21, 27                        Path 29
  3401.             /Z 21, 28                        POST= 15
  3402.           Configuration File 8               PRE= 15
  3403.           Configuration File 29              Prevent overwrite 21
  3404.  
  3405.           D                                  Q
  3406.           Default Extension 11, 21, 23       QuickBBS 12
  3407.           Description fix-up 21, 23
  3408.           DIRFIX 24                          R
  3409.                                              Redirection 9, 10, 11
  3410.           E                                  Redirection error 10
  3411.           Environment 29                     Repack 31
  3412.           Escape 5                           Running ZZAP 4, 30
  3413.           Executing Compsec 18
  3414.           Expanded Memory 21, 25             S
  3415.           Extended Memory 21, 25             SCANV 16, 21, 27
  3416.           External Event Conversion 37       Self-extracting archives 21,
  3417.                                                27
  3418.                                              SFX 21, 27
  3419.  
  3420.  
  3421.  
  3422.           Index                                                     Page 53
  3423.  
  3424.  
  3425.  
  3426.  
  3427.  
  3428.  
  3429.           Subdirecties 21, 22                V
  3430.           Subdirectories 11                  Viruses 16, 21, 27
  3431.           Subdirectory recursion 21
  3432.           Summary of Features 2              W
  3433.           Switches 12, 21                    When Good Files Go Bad 34
  3434.                                              Wild-cards 31
  3435.           T
  3436.           Temporary subdirectory 14          Z
  3437.           Test mode 21, 23, 24, 26, 27       ZZAPLOG= 17
  3438.  
  3439.  
  3440.  
  3441.  
  3442.  
  3443.  
  3444.  
  3445.  
  3446.  
  3447.  
  3448.  
  3449.  
  3450.  
  3451.  
  3452.  
  3453.  
  3454.  
  3455.  
  3456.  
  3457.  
  3458.  
  3459.  
  3460.  
  3461.  
  3462.  
  3463.  
  3464.  
  3465.  
  3466.  
  3467.  
  3468.  
  3469.  
  3470.  
  3471.  
  3472.  
  3473.  
  3474.  
  3475.  
  3476.  
  3477.  
  3478.  
  3479.  
  3480.  
  3481.  
  3482.  
  3483.  
  3484.  
  3485.  
  3486.           Page 54                                                     Index
  3487.  
  3488.  
  3489.  
  3490.  
  3491.  
  3492.  
  3493.  
  3494.  
  3495.  
  3496.                                     Contents
  3497.  
  3498.  
  3499.  
  3500.                Chapter 1  License Agreement                          1
  3501.  
  3502.                Chapter 2  Summary of Features                        3
  3503.  
  3504.                Chapter 3  Running ZZAP                               5
  3505.  
  3506.                Chapter 4  Archive Programs Supported                 7
  3507.  
  3508.                Chapter 5  Configuration File                         9
  3509.                   5.1  ARC=  . . . . . . . . . . . . . . . . . . . . 9
  3510.                   5.2  UNARC=  . . . . . . . . . . . . . . . . . .  10
  3511.                   5.3  DEFAULT=  . . . . . . . . . . . . . . . . .  11
  3512.                   5.4  BADDIR= . . . . . . . . . . . . . . . . . .  12
  3513.                   5.5  SWITCH= . . . . . . . . . . . . . . . . . .  12
  3514.                   5.6  FIXER=  . . . . . . . . . . . . . . . . . .  12
  3515.                   5.7  AGE=  . . . . . . . . . . . . . . . . . . .  13
  3516.                   5.8  PRE=  . . . . . . . . . . . . . . . . . . .  13
  3517.                   5.9  MID=  . . . . . . . . . . . . . . . . . . .  14
  3518.                   5.10  POST=  . . . . . . . . . . . . . . . . . .  15
  3519.                   5.11  SFX= . . . . . . . . . . . . . . . . . . .  15
  3520.                   5.12  NONSFX=  . . . . . . . . . . . . . . . . .  16
  3521.                   5.13  NESTEDSFX= . . . . . . . . . . . . . . . .  16
  3522.                   5.14  SCANOPT= . . . . . . . . . . . . . . . . .  16
  3523.  
  3524.                Chapter 6  Logging ZZAP Activity                     17
  3525.  
  3526.                Chapter 7  Executing Compsec                         19
  3527.  
  3528.                Chapter 8  Command Line Options                      21
  3529.                   8.1  Flag Odd Attributes - /A  . . . . . . . . .  21
  3530.                   8.2  Allow subdirectories - B  . . . . . . . . .  22
  3531.                   8.3  Call Update Program - /C  . . . . . . . . .  23
  3532.                   8.4  File Date Stamping - /D . . . . . . . . . .  23
  3533.                   8.5  Target Extension - /E . . . . . . . . . . .  23
  3534.                   8.6  File List - /F  . . . . . . . . . . . . . .  24
  3535.                   8.7  Ignore File Age - /I  . . . . . . . . . . .  24
  3536.                   8.8  Keeping The Original - /K . . . . . . . . .  25
  3537.                   8.9  Expanded/Extended Memory - /M . . . . . . .  25
  3538.                   8.10  Convert Nested - /N  . . . . . . . . . . .  25
  3539.                   8.11  Keep Original Archive Format - /O  . . . .  25
  3540.                   8.12  Prevent Overwriting - /P . . . . . . . . .  26
  3541.                   8.13  Subdirectory Recursion - /R  . . . . . . .  26
  3542.                   8.14  Strip Attributes - /S  . . . . . . . . . .  26
  3543.                   8.15  Test Only - /T . . . . . . . . . . . . . .  27
  3544.                   8.16  Virus Scan - /V  . . . . . . . . . . . . .  27
  3545.                   8.17  Self-extracting Archives - /X  . . . . . .  27
  3546.                   8.18  Enable/Disable I/O Redirection - /Z  . . .  28
  3547.  
  3548.  
  3549.  
  3550.                                           i
  3551.  
  3552.  
  3553.  
  3554.  
  3555.  
  3556.  
  3557.                Chapter 9  Locating The Configuration File           29
  3558.  
  3559.                Chapter 10  Running ZZAP                             31
  3560.  
  3561.                Chapter 11  Nested Archives                          33
  3562.  
  3563.                Chapter 12  When Good Files Go Bad                   35
  3564.  
  3565.                Chapter 13  External Event Conversion                37
  3566.  
  3567.                Appendix A  Sysop Recommendations                    39
  3568.  
  3569.                Appendix B  Exit Codes                               41
  3570.  
  3571.                Appendix C  Acknowledgments                          43
  3572.  
  3573.                Appendix D  My Lawyer Made Me Do It                  45
  3574.  
  3575.                Appendix E  Version History                          47
  3576.  
  3577.                Index                                                53
  3578.  
  3579.  
  3580.  
  3581.  
  3582.  
  3583.  
  3584.  
  3585.  
  3586.  
  3587.  
  3588.  
  3589.  
  3590.  
  3591.  
  3592.  
  3593.  
  3594.  
  3595.  
  3596.  
  3597.  
  3598.  
  3599.  
  3600.  
  3601.  
  3602.  
  3603.  
  3604.  
  3605.  
  3606.  
  3607.  
  3608.  
  3609.  
  3610.  
  3611.  
  3612.  
  3613.  
  3614.                                          ii
  3615.